source("global.R")
display_x  <- panimmune_data$sample_selection_choices[1]
display_y  <- panimmune_data$cell_content_choices[1]
internal_x <- get_variable_internal_name(display_x)
internal_y <- get_variable_internal_name(display_y)
plot_df <- panimmune_data$df %>% 
    select_(.dots = c(internal_x, internal_y)) %>% 
    .[complete.cases(.),]
plot <- create_violinplot(
    plot_df,
    internal_x,
    internal_y,
    internal_x,
    xlab = display_x,
    ylab = display_y,
    fill_colors = decide_plot_colors(panimmune_data, internal_x)
)
the condition has length > 1 and only the first element will be used
plot

ggplotly(plot) %>% 
    layout(hovermode = "closest")
plot_df %>% 
    plot_ly(
        x = ~Subtype_Immune_Model_Based,
        y = ~leukocyte_fraction,
        split = ~Subtype_Immune_Model_Based,
        type = 'violin',
        box = list(
            visible = T
        ),
        meanline = list(
            visible = T
        )
    )
let(
   alias = c(
       xvar = "leukocyte_fraction",
       yvar = "Dendritic_cells.Aggregate2"
   ),
    plot_df %>% 
        plot_ly(
            x = ~xvar,
            y = ~yvar
    ) %>% 
       layout(
           title = "C6",
           xaxis = "Leukocyte Fraction",
           yaxis = "Macrophages"
       )
)
No trace type specified:
  Based on info supplied, a 'scatter' trace seems appropriate.
  Read more about this trace type -> https://plot.ly/r/reference/#scatter
No scatter mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Error: $ operator is invalid for atomic vectors
LS0tCnRpdGxlOiAiVGVzdGluZyB2YXJpb3VzIHBsb3QgZnVuY3Rpb25zIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7cn0Kc291cmNlKCJnbG9iYWwuUiIpCmBgYAoKYGBge3J9CmRpc3BsYXlfeCAgPC0gcGFuaW1tdW5lX2RhdGEkc2FtcGxlX3NlbGVjdGlvbl9jaG9pY2VzWzFdCmRpc3BsYXlfeSAgPC0gcGFuaW1tdW5lX2RhdGEkY2VsbF9jb250ZW50X2Nob2ljZXNbMV0KaW50ZXJuYWxfeCA8LSBnZXRfdmFyaWFibGVfaW50ZXJuYWxfbmFtZShkaXNwbGF5X3gpCmludGVybmFsX3kgPC0gZ2V0X3ZhcmlhYmxlX2ludGVybmFsX25hbWUoZGlzcGxheV95KQoKcGxvdF9kZiA8LSBwYW5pbW11bmVfZGF0YSRkZiAlPiUgCiAgICBzZWxlY3RfKC5kb3RzID0gYyhpbnRlcm5hbF94LCBpbnRlcm5hbF95KSkgJT4lIAogICAgLltjb21wbGV0ZS5jYXNlcyguKSxdCgpwbG90IDwtIGNyZWF0ZV92aW9saW5wbG90KAogICAgcGxvdF9kZiwKICAgIGludGVybmFsX3gsCiAgICBpbnRlcm5hbF95LAogICAgaW50ZXJuYWxfeCwKICAgIHhsYWIgPSBkaXNwbGF5X3gsCiAgICB5bGFiID0gZGlzcGxheV95LAogICAgZmlsbF9jb2xvcnMgPSBkZWNpZGVfcGxvdF9jb2xvcnMocGFuaW1tdW5lX2RhdGEsIGludGVybmFsX3gpCikKcGxvdApgYGAKCgpgYGB7cn0KZ2dwbG90bHkocGxvdCkgJT4lIAogICAgbGF5b3V0KGhvdmVybW9kZSA9ICJjbG9zZXN0IikKYGBgCgoKYGBge3J9CnBsb3RfZGYgJT4lIAogICAgcGxvdF9seSgKICAgICAgICB4ID0gflN1YnR5cGVfSW1tdW5lX01vZGVsX0Jhc2VkLAogICAgICAgIHkgPSB+bGV1a29jeXRlX2ZyYWN0aW9uLAogICAgICAgIHNwbGl0ID0gflN1YnR5cGVfSW1tdW5lX01vZGVsX0Jhc2VkLAogICAgICAgIHR5cGUgPSAndmlvbGluJywKICAgICAgICBib3ggPSBsaXN0KAogICAgICAgICAgICB2aXNpYmxlID0gVAogICAgICAgICksCiAgICAgICAgbWVhbmxpbmUgPSBsaXN0KAogICAgICAgICAgICB2aXNpYmxlID0gVAogICAgICAgICkKICAgICkKYGBgCgpgYGB7cn0KcGxvdF9kZiA8LSBwYW5pbW11bmVfZGF0YSRkZiAlPiUgCiAgICBjcmVhdGVfc2NhdHRlcnBsb3RfZGYoCiAgICAgICAgIlN1YnR5cGVfSW1tdW5lX01vZGVsX0Jhc2VkIiwKICAgICAgICAiQzQiLAogICAgICAgICJEZW5kcml0aWNfY2VsbHMuQWdncmVnYXRlMiIsCiAgICAgICAgImxldWtvY3l0ZV9mcmFjdGlvbiIKICAgICkKCmhlYWQocGxvdF9kZikKYGBgCgpgYGB7cn0KbGV0KAogICBhbGlhcyA9IGMoCiAgICAgICB4dmFyID0gImxldWtvY3l0ZV9mcmFjdGlvbiIsCiAgICAgICB5dmFyID0gIkRlbmRyaXRpY19jZWxscy5BZ2dyZWdhdGUyIgogICApLAogICAgcGxvdF9kZiAlPiUgCiAgICAgICAgcGxvdF9seSgKICAgICAgICAgICAgeCA9IH54dmFyLAogICAgICAgICAgICB5ID0gfnl2YXIKICAgICkgJT4lIAogICAgICAgbGF5b3V0KAogICAgICAgICAgIHRpdGxlID0gIkM2IiwKICAgICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiTGV1a29jeXRlIEZyYWN0aW9uIiksCiAgICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIk1hY3JvcGhhZ2VzIikKICAgICAgICkKKQpgYGAKCg==